import xlrd
import xlwt
from xlutils.copy import copy  # 需要安装 xlutils 库


class ExcelModifier:
    def __init__(self, excelFilePath):
        self.original_book = xlrd.open_workbook(excelFilePath, formatting_info=True)
        self.copied_book = copy(self.original_book)  # 复制为可写对象
        self.sheet_names = self.original_book.sheet_names()

    def write_data_by_row_col(self, sheet_name, row_index, col_index, data):
        """
        在指定 sheet 的 (row, col) 位置写入数据
        :param sheet_name: 工作表名称
        :param row_index: 行号（从0开始）
        :param col_index: 列号（从0开始）
        :param data: 要写入的数据（字符串或其他类型）
        """
        # 获取对应的工作表对象
        sheet = self.copied_book.get_sheet(self.sheet_names.index(sheet_name))
        sheet.write(row_index, col_index, data)

    def save(self, output_path):
        """保存修改后的文件到新路径"""
        self.copied_book.save(output_path)


# 使用示例：
if __name__ == "__main__":
    excel_path = "your_file.xls"  # 原文件路径
    modifier = ExcelModifier(excel_path)

    # 在第一个 sheet 的 (0, 0) 位置写入 "Hello"
    modifier.write_data_by_row_col("Sheet1", 0, 0, "Hello")

    # 保存到新文件（不要覆盖原文件！）
    modifier.save("modified_file.xls")
